#include <stdio.h>
#include <windows.h>
#include <tchar.h>
/*
#include "../src/debugfactory.h"
#include "../src/test.h"

*/

#include "testsuite.h"
#include "testcase.h"
#include "testfactory.h"
#include "attest.h"

using namespace attest;
using namespace AllTing::Type;

#include "../src/Candidate.h"
#include "../src/Cell.h"
#include "../src/Block.h"
#include "../src/Board.h"
#include "../src/BlockSet.h"
#include "../src/Candidate.h"

#include "../src/NakedSingle.h"

#include "TestCell.h"
#include "TestBlock.h"
#include "TestBoard.h"
#include "TestBlockSet.h"
#include "TestCandidate.h"

#include "TestNakedSingle.h"

int main()
{
	TestSuite aTestSuite(_T("SudokuEngineTestSuite"));

	CellTestCase aCellTestCase(_T("CellTestCase"));
	BlockTestCase aBlockTestCase(_T("BlockTestCase"));
	BoardTestCase aBoardTestCase(_T("BoardTestCase"));
	BlockSetTestCase aBlockSetTestCase(_T("BlockSetTestCase"));
	CandidateTestCase aCandidateTestCase(_T("CandidateTestCase"));

	NakedSingleTestCase aNakedSingleTestCase(_T("NakedSingleTestCase"));

	aTestSuite.Add(&aCellTestCase);
	aTestSuite.Add(&aBlockTestCase);
	aTestSuite.Add(&aBlockSetTestCase);
	aTestSuite.Add(&aBoardTestCase);
	aTestSuite.Add(&aCandidateTestCase);

	aTestSuite.Add(&aNakedSingleTestCase);

	aTestSuite.Run();

//	DebugFactory::Instance()->Report();
	REPORT_TEST();

//	TestFactory::Instance()->Destroy();
	DESTROY_TEST();
	return 0;
}